package com.songlanyun.modules.opus.model.vo;

import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.core.type.TypeReference;
import com.songlanyun.common.drive.RootEntity;
import com.songlanyun.common.drive.ValueObject;
import com.songlanyun.common.enums.OpusConstant;
import com.songlanyun.common.exception.RRException;
import com.songlanyun.common.utils.custom.ClassConvertUtils;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 作品表
 *
 * @author lubo
 * @email sunlightcs@gmail.com
 * @date 2021-01-13 16:35:02
 */
@Data
public class OpusVO implements ValueObject {

    /**
     *
     */
	private Long id;
	/**
	 * 作品标题
	 */
	private String title;
	/**
	 * 作品封面
	 */
	private String cover;
	/**
	 * 主题
	 */
	private String theme;
	/**
	 * 发布会员id（平台发布这里是0 ）
	 */
	private Long publisherId;
	/**
	 * 用户昵称
	 */
	@TableField(exist = false)
	private String nickname;
	/**
	 * 用户手机号
	 */
	@TableField(exist = false)
	private String mobile;
	/**
	 * 作品类型（0图文，1视频）
	 */
	private OpusConstant.OpusType opusType;
	/**
	 * 0官方，1会员
	 */
	private OpusConstant.PublisherType publisherType;
	/**
	 * 关联商品
	 */
	private Long goodsId;
	/**
	 * 点赞数
	 */
	private Integer likeNum;
	/**
	 * 评论数
	 */
	private Integer commentNum;
	/**
	 * 浏览数
	 */
	private Integer browseNum;
	/**
	 * 收藏数
	 */
	private Integer collectNum;
	/**
	 * 分享数
	 */
	private Integer shareNum;
	/**
	 * 审核说明
	 */
	private String auditRemark;
	/**
	 * 作品审核状态（0待审核，1通过审核，2审核不通过）
	 */
	private OpusConstant.VerifyStatus opusStatus;
	/**
	 * 管理员开通置顶
	 */
	private Boolean openStick;
	/**
	 * 是否删除
	 */
	private Integer deleted;
	/**
	 * 审核时间
	 */
	private Date auditTime;
	/**
	 * 作品内容
	 */

	private String content;
	/**
	 * 当是图文作品时，记录多张图片，最多10张，以数组形式记录
	 */
	@JsonIgnore
	private String images;

	@TableField(exist = false)
	private List<String> imagesList;

	public List<String> getImages() {
		return imagesList;
	}

	public void setImagesList(List<String> images) {
		this.imagesList = images;
		if (imagesList.isEmpty()) {
			this.images="";
		}
		else
		{
			this.images = JSONUtil.toJsonStr(this.images);
		}
	}

	/**
	 * 把字符串映射成对象（多图）
	 */
	public void setImages(String images) {
		this.images = images;
		if (StringUtils.isEmpty(this.images)) {
			setImagesList(new ArrayList<>());
		} else {
			try {
				setImagesList(ClassConvertUtils.stringToClassSnake(images, new TypeReference<List<String>>() {
				}));
			} catch (IOException e) {
				throw new RRException("图片无法转List");
			}

		}
	}


	/**
	 * 视频地址
	 */
	private String mediaAddress;
	/**
	 * 文件大小
	 */
	private Long mediaSize;
	/**
	 * 播放时长（单位秒）
	 */
	private Integer duration;


}
